/**
 * @file   navigator.h
 * @brief  导航模块主进程头文件
 * @encode UTF-8
 * @log    date        author      notes
 *         2021.09.01  Jimmy       first version
 */
#ifndef __NAVIGATOR_H_ 
#define __NAVIGATOR_H_ 

#include <thread>
#include <pthread.h>
#include <mutex>
#include <memory>

#include "simulation/simulation.h"
#include "navigator/a_star/a_star.h"
#include "navigator/a_star_normal/a_star_normal.h"

class Navigator
{
    public:
        enum NaviMainState
        {
            NMS_IDLE = 0,
            NMS_TARGET_PATHING,
        };

    public:
        Navigator();
        ~Navigator();

    private:
        std::unique_ptr<Simu> mSimu = nullptr;

        NaviMainState mMainState;
        bool mThreadRun;

    private:
        void naviThreadEntry(void);

        void listenSimuEvent(sim_shell::sim_event_t event);
};



#endif	/* __NAVIGATOR_H_ */